package com.tz.mapper;

import com.tz.entity.RightControl;
import com.tz.entity.Role;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * @author Alex
 * @date 18-1-2
 */
public interface RoleMapper {

    /**
     * 显示所有的角色
     *
     * @return 选择角色列表
     */
    List<Role> selectAllRole();
    /**
     * 通过角色id获取对应的权限
     *
     * @param roleId 角色id
     * @return 改id拥有的权限
     */
    List<RightControl> selectRightControls(Long roleId);

    /**
     * 获取所有的权限
     *
     * @return 改id拥有的权限
     */
    List<RightControl> selectAllControls();

    /**
     * 分页显示所有的角色
     *
     * @param PageNow
     * @param PageSize
     * @return 本页角色
     */
    List<Role> selectRoleByPage(@Param("pageNow") Integer PageNow,@Param("pageSize") Integer PageSize);

    /**
     * 通过id选择角色
     * @param id
     * @return
     */
    Role selectRoleById(Long id);
    /**
     * 通过id选择角色
     * @param id
     * @return
     */
    Role selectRoleByIdNoRight(Long id);
    /**
     * 计算角色数量
     * @return 有多少条数据
     */
    Integer countRole();
    /**
     * 批量删除角色
     * 需注意角色是否在使用
     *
     * @param ids
     */
    void deleteBatchRoles(@Param("ids") List<Long> ids);

    /**
     * 修改角色权限
     * 要先删除已有权限
     *
     * @param id      角色id
     * @param rightids 权限(RightControl)对应的id
     */
    void insertBatchRights(@Param("id")Long id,@Param("rids")List<Long> rightids);

    /**
     * 删除角色的所有权限
     *
     * @param id 角色id
     */
    void deleteRoleRights(Long id);

    /**
     * 判断rolename是否重复
     *
     * @param id 角色id
     */
    Integer checkRoleName(String rolename);

    /**
     * 添加角色
     *
     * @param role 新角色
     *             默认无权限
     */
    void insertRole(Role role);


}
